package xyz.sekai52799.answer.a1001_a1200;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Question1200 {
//    给你个整数数组arr，其中每个元素都 不相同。
//
//    请你找到所有具有最小绝对差的元素对，并且按升序的顺序返回。
//
//
//
//    示例 1：
//
//    输入：arr = [4,2,1,3]
//    输出：[[1,2],[2,3],[3,4]]
//    示例 2：
//
//    输入：arr = [1,3,6,10,15]
//    输出：[[1,3]]
//    示例 3：
//
//    输入：arr = [3,8,-10,23,19,-4,-14,27]
//    输出：[[-14,-10],[19,23],[23,27]]
//
//    来源：力扣（LeetCode）
//    链接：https://leetcode.cn/problems/minimum-absolute-difference
//    著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

    public static List<List<Integer>> minimumAbsDifference(int[] arr) {
        List<List<Integer>> result = new ArrayList();
        int currentMinNumber = Integer.MAX_VALUE;
        int[] ints = Arrays.stream(arr).sorted().toArray();
        for (int i = 0;i < ints.length-1;i++){
            if (ints[i+1] - ints[i] < currentMinNumber){
                result.clear();
                currentMinNumber = ints[i+1] - ints[i];
                List<Integer> temp = new ArrayList<>();
                temp.add(ints[i]);
                temp.add(ints[i+1]);
                result.add(temp);
            } else if (ints[i+1] - ints[i] == currentMinNumber) {
                List<Integer> temp = new ArrayList<>();
                temp.add(ints[i]);
                temp.add(ints[i+1]);
                result.add(temp);
            }
        }
        return result;
    }
}
